﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace AwesomeDraughts
{
    public partial class Game : Form
    {


        Program program = new Program();


        PictureBox[,] checks = new PictureBox[9, 9];
        PictureBox showWhoTurn = new PictureBox();
        PictureBox[,] checkCounter = new PictureBox[12, 2];

        protected bool isSecondClick = false;
        public int myColour;
        public int currentColour;

        public int firstClickX;
        public int firstClickY;

        public Game(AwesomeDraughts newMenu)
        {

            InitializeComponent();
            menu = newMenu;
            showWhoTurn = new System.Windows.Forms.PictureBox();
            showWhoTurn.Location = new System.Drawing.Point(35, 400);
            // showWhoTurn.Size = new System.Drawing.Size(40, 35);
            Controls.Add(showWhoTurn);
            showWhoTurn.ImageLocation = "white.jpg";

            for (int i = 0; i < 2; i++)
                for (int j = 0; j <12; j++)
                {
                    if (i < 1)
                        checkCounter[i, j].ImageLocation = "white.jpg";
                    else
                        checkCounter[i, j].ImageLocation = "black.jpg" 
 
                    checkCounter[i,j].Location = new System.Drawing.Point(35 + (9+j)* 45,60 + 42 * (9+i));
                    checkCounter[i,j].Size = new System.Drawing.Size(20,20)
                    Controls.Add(checkCounter[i,j]);
                }


            for (int i = 1; i <= 8; i++)
                for (int j = 1; j <= 8; j++)
                {
                    checks[i, j] = new System.Windows.Forms.PictureBox();
                    checks[i, j].Location = new System.Drawing.Point(35 + (j - 1) * 50, 60 + 50 * (i - 1));
                    checks[i, j].Size = new System.Drawing.Size(50, 50);
                    checks[i, j].Click += new System.EventHandler(Click1);
                    Controls.Add(checks[i, j]);
                    checks[i, j].ImageLocation = "grey.jpg";
                }
            redraw();

        }


        private AwesomeDraughts menu;

        private void goToMenu_Click(object sender, EventArgs e)
        {
            menu.Show();
            this.Close();
        }

        /*
         * в общем как именно лучше делать:
         * 1)смотреть что именно куда передвинулось и тогда думать
         * или каждый раз передавать значения точек на которые кликнули в другой класс и там уже смотреть,что произошло
         * и каждый раз перерисовывать
         * 
         * */


        /*
         *нужны шашки:
         *белая-черная обычная
         *белая-черная выделенная
         *поля:
         *серое-белое обычное
         *серое-белое выделенное
         */

        /*
         * надо еще добавить массив для кол-ва шашек текущего,чтобы 
         * перерисовывать послекаждого хода 24 пикчабокса с шашками,
         * точнее делать их просто visible-invisible
         */

        public void redraw()
        {
            for (int i = 1; i <= 8; i++)
                for (int j = 1; j <= 8; j++)
                {
                    if (program.getBoard[i, j] == 1)
                        checks[i, j].ImageLocation = "white.jpg";
                    if (program.getBoard[i, j] == 3)
                        checks[i, j].ImageLocation = "black.jpg";
                    if (program.getBoard[i, j] == 2)
                        checks[i, j].ImageLocation = "whiteKing.jpg";
                    if (program.getBoard[i, j] == 4)
                        checks[i, j].ImageLocation = "blackKing.jpg";
                    if (program.getBoard[i, j] == 0)
                        if (((i + j) % 2) == 0)
                            checks[i, j].ImageLocation = "emptyBlack.jpg";
                        else
                            checks[i, j].ImageLocation = "emptyWhite.jpg";
                }
            for (int i = 11; i >= program.countWhiteDraughts; i--)
            {
                checkCounter[i, 1].Visible = false;
            }
            for (int i = 11; i >= program.countBlackDraughts; i--)
            {
                checkCounter[i, 1].Visible = false;
            }
        }


        private void Click1(object sender, EventArgs e)
        {
            int x=-1;
            int y=-1;
            for (int i = 0; i < 8; i++)
                for (int j = 0; j < 8; j++)
                    if (checks[i, j] == sender)
                    {
                        x = i;
                        y = j;
                    }
            
            if (!isSecondClick)//первый клик по доске,то есть еще не выбрана шашка
            {
                if (program.isMyChecker(x,y,myColour))
                {
                    isSecondClick = true;
                    pic[x, y].ImageLocation = "outlined.jpg";//выбрать шашку
                    firstClickX = x;
                    firstClickY = y;
                }
                else
                {
                    return;
                }
                
            }
            else//второй клик по доске,шашка уже выбрана
                
            {
                if(program.canMoveThere(firstClickX,firstClickY,x,y)){
                    checks[x,y].ImageLocation = pic[firstClickX,firstClickY].ImageLocation;
                    checks[firstClickX,firstClickY].ImageLocation = "grey.jpg";
                    //зачистить серым все поля между ними
                    //еще проверить не съела ли шашка что-то,когда ходила
                }
                else{
                    if(program.isMyChecker(x,y,myColour)){
                        checks[firstClickX,firstClickY].ImageLocation = pic[x,y].ImageLocation;//обычная шашка 
                        firstClickX = x;
                        firstClickY = y;
                        checks[x,y].ImageLocation = ;//выделенная шашка

                        /*выделить ее,с предыдущей выделение снять
                         * выделить поля, куда может походить новая шашка
                         */
                    }
                    else{
                        isSecondClick = false;
                        checks[firstClickX,firstClickY].ImageLocation = ;//обычная шашка
                        return;
                    }
                }
            }
        }
    }
}
